package daoyu.apps.pojo.login;

/**
 * 登录接口返回结果的状态码枚举类。
 * 包含各种可能的错误码及其对应的提示信息。
 */
public enum LoginResCodeEnum {

    /**
     * 请求成功
     */
    SUCCESS(0, "请求成功"),

    /**
     * 系统错误
     */
    SYSTEM_ERROR(-1, "系统错误"),

    /**
     * 未传必要参数，请检查
     */
    PARAM_ERROR(40014, "未传必要参数，请检查"),

    /**
     * appid 错误
     */
    APPID_ERROR(40015, "appid 错误"),

    /**
     * secret 错误
     */
    SECRET_ERROR(40017, "secret 错误"),

    /**
     * code 错误
     */
    CODE_ERROR(40018, "code 错误"),

    /**
     * acode 错误
     */
    ACODE_ERROR(40019, "acode 错误");

    private final int errNo;
    private final String errTips;

    /**
     * 私有构造方法，用于初始化枚举实例。
     *
     * @param errNo   错误码
     * @param errTips 错误提示信息
     */
    LoginResCodeEnum(int errNo, String errTips) {
        this.errNo = errNo;
        this.errTips = errTips;
    }

    /**
     * 获取错误码。
     *
     * @return 错误码
     */
    public int getErrNo() {
        return errNo;
    }

    /**
     * 获取错误提示信息。
     *
     * @return 错误提示信息
     */
    public String getErrTips() {
        return errTips;
    }

    /**
     * 根据错误码获取对应的枚举实例。
     *
     * @param errNo 错误码
     * @return 对应的枚举实例，如果找不到则返回 null
     */
    public static LoginResCodeEnum fromErrNo(int errNo) {
        for (LoginResCodeEnum codeEnum : values()) {
            if (codeEnum.getErrNo() == errNo) {
                return codeEnum;
            }
        }
        return null;
    }
}
